/*************************************************************************
 ******************************** 过滤器方法 ******************************
 *************************************************************************/

/**
 * 数据千分位格式化
 * @param value
 * @return {string}
 */
let formatData = (value) => {
    if( !value || value === 'nan' ) return 0;

    // value = (value*1).toFixed(2) + '';
    value += '';
    if (!value.includes('.')) value += '.';
    return value.replace(/(\d)(?=(\d{3})+\.)/g, function($0, $1) {
        return $1 + ',';
    }).replace(/\.$/, '');
};

/**
 * 日期格式化
 * @param     date
 * @returns   {*}
 */
let formatNowDate = function (date) {
    let ret,
        fmt = "YYYY-mm-dd HH:MM:SS";

    if( date == '0' || !date ) {
        return '--'
    }

    date = new Date(date);

    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": (date.getMonth() + 1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加，必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        }
    }
    return fmt;
};

/**
 * 数据小数位格式化
 * @param value
 * @return {number|*} 小数位2位
 */
let formatDoubleData = (value) => {
    if( !value ) return "0%";

    return (value * 100).toFixed(0) + '%';
};

/**
 * 数据小数位格式化保留两位小数
 * @param value
 * @return {number|*} 小数位2位
 */
let formatNumFixed2 = (value) => {
    if( !value || value == '0' ) return "0%";

    return (value * 100).toFixed(2) + '%';
};

/**
 * 数组取绝对值
 * @param value
 * @return {number|*} 绝对值
 */
let formatAbs = (value)=> {
    if( !value || value == '0' ) return 0;

    return Math.abs( value );
};

/**
 * 格式化百分比
 */
let formatPercent = ( val ) => {
    if( !val ) {
        return '--';
    }

    return (val*100).toFixed() + '%';
};

/**
 * 保留一位小数
 * @param val
 * @return {string}
 */
let formatFlowValue = ( val )=> {
    if( !val ) {
        return '0.0'
    }

    return val.toFixed( 1 )
};


export {
    formatData,
    formatNowDate,
    formatNumFixed2,
    formatDoubleData,
    formatAbs,
    formatPercent,
    formatFlowValue,
};
